
package commons;
import javax.swing.table.AbstractTableModel;

/**
 *  Classe que modela un Abstract Model personalitzat per carregar un JTable
 * @author Grup 1X4J
 */


public class AbstractModelTable extends AbstractTableModel {
 
    final String[] columnsTitle;
    final Object[][] rowDates;
    
    /**
     *  Constructor amb tres paràmetres
     * @param Pcol              Titols de les columenes de la taula
     * @param Pdades            Files de la taula
     * @param pEstat            Estat, ens serveix per habilitar o no les files
     */
    public AbstractModelTable(String[]Pcol, Object[][] Pdades){
        this.columnsTitle=Pcol;      
        this.rowDates=Pdades;
        
    }
    /**
     * Accessor de lectura. Obté el total de files de la taula
     * @return Total de files
     */    
   
    public int getRowCount() {
        return rowDates.length;
    }
    /**
     * Accessor de lectura. Obté el total de columnes de la taula
     * @return Total de columnes
     */
   
    public int getColumnCount() {
           return columnsTitle.length;
    }
    /**
     * Accessor de lectura. Obté el nom de la columna de la taula
     * @param col       Index de la columna
     * @return 
     */
    
    public String getColumnName(int col) {
        return columnsTitle[col];
}
    /**
     * Accessor de lectura, Obté l'objecte emmagatzemat en una casella de la taula
     * @param rowIndex          Fila 
     * @param columnIndex       Columna
     * @return Objecte
     */
   
    public Object getValueAt(int rowIndex, int columnIndex) {
        return rowDates[rowIndex][columnIndex];

    }
    /**
     * Accessor de lectura. Obté el tipus d'objecte que s'emmagatzema en una columna de la taula
     * @param c         index de la columna
     * @return  Tipus d'objecte
     */

    public Class getColumnClass(int c){
        return getValueAt(0,c).getClass();
    }
    /**
     * Accessor d'escriptura. Anota el valor de l'objecte d'una casella de la taula
     * @param value
     * @param row
     * @param col 
     */
  
     public void setValueAt(Object value, int row, int col){                 
        rowDates[row][col]=value;
        fireTableCellUpdated(row,col);                   
    }
     /**
      * Accessor modificador. habilita o desahabilita les caselles de la taula
      * @param row          index de la fila
      * @param col          index de la columna
      * @return cert habilitat, fals en cas contrari.
      */
 
    public boolean isCellEditable(int row,int col){                
        return false;
    }
      
}
